package com.secxiot.provider.system.service;

import com.secxiot.provider.system.dto.AppBannerDto;
import com.secxiot.provider.system.dto.AppNewsDto;
import com.secxiot.provider.system.dto.AppVersionDto;
import com.secxiot.provider.system.dto.FileLogDto;
import com.secxiot.provider.system.entity.AppRecommend;
import com.secxiot.provider.system.entity.FileLog;
import com.secxiot.provider.system.vo.AppRegimeVo;
import com.secxiot.provider.system.vo.DataDictVo;
import com.secxiot.provider.system.vo.FileLogVo;
import com.secxiot.provider.system.vo.FilesStorageVo;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface SystemService {

    List<DataDictVo> listDataDict(String parentCode);

    Long saveFileLog(FileLog fileLog);

    FileLogDto getFileUri(Long logId);

    Long useFileLogs(List<Long> logIds);

    List<FileLogVo> selectFileByCode(String code);

    AppVersionDto getAppVersion(String platform, String clientType);

    List<AppBannerDto> getAppBanner(Long userId, Long hospitalId);

    List<AppNewsDto> getAppNews(Long userId, Long hospitalId);

    List<AppRecommend> getAppRecommends(Long userId, Long hospitalId, Long pageNo, Long pageSize);

    AppRecommend getAppRecommendById(Long recommendId);


    /********************************资料库***************************************/
    /**
     * 资料库--列表
     *
     * @param userId     用户ID
     * @param hospitalId 医疗机构ID
     * @param pageNo     页数
     * @param pageSize   条数
     * @param isPage     是否分页  0 否  1 是
     * @param searchName 关键字
     * @return
     */
    List<FilesStorageVo> selectFilesStorage(@Param("userId") Long userId,
                                            @Param("hospitalId") Long hospitalId,
                                            @Param("pageNo") Integer pageNo,
                                            @Param("pageSize") Integer pageSize,
                                            @Param("isPage") Integer isPage,
                                            @Param("searchName") String searchName);

    /**
     * 资料库--详情
     *
     * @param id 资料库ID
     * @return
     */
    FilesStorageVo getFilesStorageById(@Param("id") Long id);

    /**
     * 资料库-添加
     *
     * @param filesStorageVo
     * @return
     */
    Long insertFilesStorage(FilesStorageVo filesStorageVo);


    /**
     * 资料库--修改
     *
     * @param filesStorageVo
     * @return
     */
    Long updateFilesStorage(FilesStorageVo filesStorageVo);

    /********************************医院文化制度***************************************/

    /**
     * 医院文化制度--列表
     *
     * @param type       数据字典 00015
     * @param hospitalId 医疗机构ID
     * @param pageNo     页数
     * @param pageSize   条数
     * @param isPage     是否分页  0 否  1 是
     * @param searchName 关键字
     * @return
     */
    List<AppRegimeVo> selectAppRegime(@Param("type") String type,
                                      @Param("hospitalId") Long hospitalId,
                                      @Param("pageNo") Integer pageNo,
                                      @Param("pageSize") Integer pageSize,
                                      @Param("isPage") Integer isPage,
                                      @Param("searchName") String searchName);

    /**
     * 医院文化制度 --详情
     *
     * @param id 主键
     * @return
     */
    AppRegimeVo getAppRegimeById(@Param("id") Long id);

    /**
     * 删除文件
     * @param fileId
     * @return
     */
    int deleteFile(@Param("fileId") Long fileId);
}
